﻿using LinqKit;
using Management.Auxiliary;
using System.Linq;

namespace Management.Core.Suspension
{
    public class SuspensionManager:BaseManager<Suspension>
    {
        public Paging<Suspension> FindPageList(Paging<Suspension> pagingSuspension, int? suspensionID, string name, int? order)
        {
            //查询表达式
            var _where = PredicateBuilder.New<Suspension>(true);
            if (suspensionID != null && suspensionID > 0) _where = _where.And(u => u.SuspensionID == suspensionID);
            if(!string.IsNullOrEmpty(name)) _where = _where.And(u=>u.Name.Contains(name));
            //排序
            OrderParam _orderParam;
            switch (order)
            {
                case 0://ID升序
                    _orderParam = new OrderParam() { PropertyName = "SuspensionID", Method = OrderMethod.ASC };
                    break;
                case 1://ID降序
                    _orderParam = new OrderParam() { PropertyName = "SuspensionID", Method = OrderMethod.DESC };
                    break;
                case 2://创建时间降序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.ASC };
                    break;
                case 3://创建时间升序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.DESC };
                    break;
                case 4://修改时间升序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.ASC };
                    break;
                case 5://修改时间降序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.DESC };
                    break;
                default://ID降序
                    _orderParam = new OrderParam() { PropertyName = "SuspensionID", Method = OrderMethod.DESC };
                    break;
            }

            pagingSuspension.Items = Repository.FindPageList(pagingSuspension.PageSize, pagingSuspension.PageIndex, out pagingSuspension.TotalNumber, _where, _orderParam).ToList();
            return pagingSuspension;
        }
    }
}
